package com.example.springdemo.design_model.observer.subject;

import com.example.springdemo.design_model.observer.observer.Observer;
import java.util.ArrayList;
import java.util.Observable;

/**
 * 具体的主题实现
 * @author zhangding
 * @date 2022年6月22日21:19:45
 */
public class MySubject implements Subject{
    /**
     * 所有的持有观察者对象
     */
    private ArrayList<Observer> observers = new ArrayList<>();

    @Override
    public void registerObserver(Observer observer) {
        observers.add(observer);
    }

    @Override
    public void removeObserver(Observer observer) {
        int observerIndex = observers.indexOf(observer);
        // 避免observer不在此数组中
        if (observerIndex >= 0){
            observers.remove(observerIndex);
        }
    }

    @Override
    public void notifyObservers() {
        for (Observer observer: observers) {
            // 假设要通知的数据为8
            observer.update(8);
        }
    }
}
